MetaObjectHandler的使用

您所在的位置:网站首页 mybatisplus mongodb MetaObjectHandler的使用

MetaObjectHandler的使用

2023-08-10 17:47| 来源: 网络整理| 查看: 265

使用场景

在数据库中插入数据或者更新数据时,往往伴随的时间的更新,此时又不想用数据库给定的时间,那么我们就可以使用mybatis-plus中的MetaObjectHandler接口 来实现时间更新的目的

MetaObjectHandler接口是mybatis-plus为我们提供的的一个扩展接口,我们可以利用这个接口在我们插入或者更新数据的时候,为一些字段指定默认值。 复制代码 MetaObjectHandler使用方法

配置好项目环境以后

导入mybatis-plus-boot-starterpom 文件

com.baomidou mybatis-plus-boot-starter 3.0.5 复制代码

设计好相对应的sql,找到需要操纵的变量名

在实体类中添加 @TableField注解

FieldFill.INSERT表示只是插入时生效

FieldFill.INSERT_UPDATE 表示插入和更新时生效

/** * 创建时间 */ @TableField(fill = FieldFill.INSERT) private Date gmtCreate; @TableField(fill = FieldFill.INSERT_UPDATE) private Date gmtModified; 复制代码

在config目录下创建Myandler类实现MetaObjectHandler

注:需要加上@Component注解

@Component public class MyHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { System.out.println("添加插入时间"); this.setFieldValByName("gmtCreate",new Date(),metaObject); this.setFieldValByName("gmtModified",new Date(),metaObject); } @Override public void updateFill(MetaObject metaObject) { System.out.println("添加更新时间"); this.setFieldValByName("gmtModified",new Date(),metaObject); } } 复制代码 测试

测试类

@SpringBootTest public class UserMemberTest { @Resource private UmsMemberMapper umsMemberMapper; @Test void testInsert(){ UmsMember w =new UmsMember(); w.setUsername("whj"); w.setNickName("nick"); w.setStatus(0); w.setEmail("[email protected]"); w.setNote("note"); umsMemberMapper.insert(w); } @Test void testUpdate(){ UmsMember w = new UmsMember(); w.setId(70L); umsMemberMapper.updateById(w); } } 复制代码

首先执行testInsert() 方法,可以看到对应的变量名中的时间是相同的

其次执行 testUpdate()方法,可以看到时间上的不同



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3